/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.srm.utilidades;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Frame;

import java.awt.event.KeyEvent;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 *
 * @author JORGE
 */
public class Control {

    /**
     * Me cierra todas las ventanas que queden 
     * abiertas en la aplicacion
     */
    public static void cerrarTodasLasVentanas() {
        Frame[] frame = JFrame.getFrames();
        for (int i = 0; i < frame.length; i++) {
            frame[i].dispose();

        }
    }

    /**
     *me acepta solo numeros 
     */
    public static void validaNumeros(java.awt.event.KeyEvent evt, JTextField campo, int numero) {
        int caracter = (int) evt.getKeyChar();
        char letra = ((char) caracter);

        int n = campo.getText().length() + 1;
        if (n > numero) {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>" + "<h2 Style='color: blue; font-style: italic;'> No puede superar la cantidad de caracteres permitidos </h2>"
                    + "<b>" + --n + " <br/> Es el maximo  para este campo </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }

        //           solo numeros               retroceso       ctrl+c           ctrl + v          ctrl + x          supri                  -
        if (caracter >= 48 && caracter <= 57 || caracter == 8 || caracter == 3 || caracter == 22 || caracter == 24 || caracter == 27 || caracter == 45) {
        } else {
//        int numeropermitido = campo.getText().length();
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>"
                    + "<h2 Style='color: blue; font-style: italic;'> Ingrese numeros por favor </h2>"
                    + "<b> " + letra + "<br/> no es un numero </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }
    }

    /**
    
     *me acepta la cantidad solicitada / texfield
     */
    public static void validaCantidad(java.awt.event.KeyEvent evt, JTextField campo, int numero) {
        int caracter = (int) evt.getKeyChar();
        char letra = (char) caracter;

        int n = campo.getText().length() + 1;
        if (n > numero) {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>" + "<h2 Style='color: blue; font-style: italic;'> No puede superar la cantidad de caracteres permitidos </h2>"
                    + "<b>" + --n + " <br/> Es el maximo  para este campo </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }
    }

    /**
     *me acepta la cantidad solicitada /text area
     */
    public static void validaCantidadA(java.awt.event.KeyEvent evt, JTextArea campo, int numero) {
        int caracter = (int) evt.getKeyChar();
        char letra = (char) caracter;

        int n = campo.getText().length() + 1;
        if (n > numero) {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>" + "<h2 Style='color: blue; font-style: italic;'> No puede superar la cantidad de caracteres permitidos </h2>"
                    + "<b>" + --n + " <br/> Es el maximo  para este campo </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }
    }

    /**
     *me acepta solo letras
     */
    public static void validaLetras(java.awt.event.KeyEvent evt, JTextField campo, int numero) {
        int caracter = (int) evt.getKeyChar();
        char letra = (char) caracter;

        int n = campo.getText().length() + 1;
        if (n > numero) {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>" + "<h2 Style='color: blue; font-style: italic;'> No puede superar la cantidad de caracteres permitidos </h2>"
                    + "<b>" + --n + " <br/> Es el maximo  para este campo </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }


        //     mayusculas                            minusculas                        espacio                retrocero       ctr+c              ctrl+v            ctrl + x           supr           shift, alt
        if (caracter >= 65 && caracter <= 90 || caracter >= 97 && caracter <= 122 || caracter == 32 || caracter == 8 || caracter == 3 || caracter == 22 || caracter == 24 || caracter == 127 || caracter == 65535) {
            // evt.setKeyChar((char) KeyEvent.VK_CLEAR);
        } else {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>"
                    + "<h2 Style='color: blue; font-style: italic;'> Ingrese letras por favor </h2>"
                    + "<b> " + letra + "<br/> no es una letra </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }
    }

    /**
     *me validad los correos ???
     */
    public static void validaCorreo(java.awt.event.KeyEvent evt, JTextField campo, int numero) {
        int caracter = (int) evt.getKeyChar();
        char letra = (char) caracter;

        int n = campo.getText().length() + 1;
        if (n > numero) {
            evt.setKeyChar((char) KeyEvent.VK_CLEAR);
            campo.setToolTipText(("<html> <center> <h1> Advertencia </h1>" + "<h2 Style='color: blue; font-style: italic;'> No puede superar la cantidad de caracteres permitidos </h2>"
                    + "<b>" + --n + " <br/> Es el maximo  para este campo </b> </center>"
                    + "<br/> Compruebe sus datos."));
        }
    }

    public static void disableAndEnabledContainer(Container c, boolean accion) {
        Component[] components = c.getComponents();
        for (int i = 0; i < components.length; i++) {
            components[i].setEnabled(accion);
            if (components[i] instanceof Container) {
                disableAndEnabledContainer((Container) components[i], accion);
            }
        }
    }

//    public static void cleanContainer(Container c, String caracter){
//       Component[] components = c.getComponents();
//        for (int i = 0; i < components; i++) {
//            components[i].gett
//        }
//    }

    public static void mensajeJOption(String mensaje, String titulo, int tam) {
        JTextArea txtArea = new JTextArea(mensaje);
        Font font = new Font("sansserif", Font.BOLD, tam);
        txtArea.setFont(font);
        txtArea.setForeground(Color.BLUE);
        txtArea.setOpaque(true);
        txtArea.setEditable(false);
        txtArea.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        JOptionPane.showMessageDialog(null, txtArea, titulo, JOptionPane.INFORMATION_MESSAGE);

    }

    public static int diasVencidos(Date fecha1, Date fecha2, int plazo) {
        long fechaInicialMs = fecha1.getTime();
        long fechaFinalMs = fecha2.getTime();
        long diferencia = fechaFinalMs - fechaInicialMs;
        double dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
        int diasTranscuridos = (int) dias;
        int vencidos = diasTranscuridos - plazo;

        return vencidos;
    }
}
